package offertest.test02;

import java.util.Random;

/**
 * @ClassName MyThread
 * @Description 模拟每个人抢红包的线程类
 * @Author ZJX
 * @Date 2025/4/7 19:42
 * @Version 1.0
 **/
public class MyThread02 extends Thread {
    static int totalAmount = 100;  // 总金额
    static int num = 3;  // 剩余名额
    static int[] result = new int[3];  // 每个人抢到的红包金额数组

    @Override
    public void run() {
        synchronized (MyThread02.class) {
            if (num > 0) {
                Random random = new Random();
                // 如果是最后一个人，直接把剩余金额分配给他
                int currentAmount = 0;
                if (num == 1) {
                    currentAmount = totalAmount;  // 剩余金额全给最后一个人
                } else {
                    currentAmount = random.nextInt(totalAmount / num) + 1;  // 随机金额，不超过剩余金额/剩余名额  左开右闭
                }

                // 更新抢到的金额，减少剩余金额和剩余名额
                result[3 - num] = currentAmount;  // 保存当前线程抢到的金额
                totalAmount -= currentAmount;  // 更新剩余总金额
                num--;  // 剩余名额减1

                // 输出当前线程抢到的金额
                System.out.println(Thread.currentThread().getName() + " 抢到了红包: " + currentAmount + "元");
            }
        }
    }
}
